/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AbstractFactory;

import AbstractFactory.AbstractFactory.OS;

/**
 *
 * @author David
 */
public class Main {

    
    public static void main(String args[]){
        
        //-------------- QUESTION  1------------------------------
        //pour du windows
        FileNameParser fp = FactoryParser.parse("C:\\truc\\machin.dll");
        fp.parse();
        
        //pour du linux
        FileNameParser fp2 = FactoryParser.parse("/truc/machin.rc");
        fp2.parse();
        
        //-------------- QUESTION  2------------------------------        
        //pour du windows
        CountFolders fp3 = FactoryParser.count("C:\\truc\\machin.dll");
        fp3.count();
        
        //pour du linux
        CountFolders fp4 = FactoryParser.count("/truc/bidule/machin.rc");
        fp4.count();
        
        //-------------- QUESTION  3------------------------------
        /**
         * on a l'interce MainFactory et les factory windows et Linux
         * qui implémentent cette mainFactory
         */
        MainFactory mp = new FactoryWindows();
        mp.parse("C:\\truc\\machin.dll");
        mp.count("C:\\truc\\machin.dll");
        
        MainFactory mpL = new FactoryLinux();
        mpL.parse("root/truc/machin.rc");
        mpL.count("/truc/machin.rc");
        
        //-------------- QUESTION  4------------------------------
        /**Dans ce cas on ne s'occupe pas de savoir si c'est du windows ou Linux
         * C'est l'abstract Factory qui gère l'OS
         * 
         * TODO il est préférable d'aller regarder dans des fichier de config l'os 
         */
        AbstractFactory fff = new AbstractFactory();
        MainFactory mf = fff.creerFactory(OS.Linux);
        mf.parse("/truc/bidule/machin.rc");
        mf.count("/truc/bidule/machin.rc");
        //************Pour MAC Question 5-------------------------------------------
        /*
         * Il a suffit de rajouter une FactoryMac dans l'abstract Factory
         */
        MainFactory mf1 = fff.creerFactory(OS.Mac);
        mf1.parse(":truc:bidule:chose:machin.mac");
        mf1.count(":truc:bidule:chose:machin.mac");
        
    }
}
